#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
@File Name: http-getfile.py
@Author: LTisme
@Date: 2021/8/28 18:33
@Description: 借助http.client，从一台HTTP（网络）服务器上通过套接字抓取文件；
              文件名参数可以是一个完整的目录路径，也可以通过末尾的：?这个查询参数来制定一个CGI脚本，触发一个远程程序；
              抓取得到的文件数据或远程程序输出可以保存到本地文件，以便模拟FTP功能，或者用str.find或html.parser模块解析；
              另外，http.client.request(method, url, body=None, hdrs={})；
"""
import sys
from http import client

showlines = 6

try:
    servername, filename = sys.argv[1:]
except:
    servername, filename = 'learning-python.com', '/index.html'

print(servername, filename)
server = client.HTTPConnection(servername)              # 连接到http战点/服务器
server.putrequest('GET', filename)                      # 发送请求和题头，也可以用POST请求，CGI脚本也可以
server.putheader('Accept', 'text/html')
server.endheaders()

reply = server.getresponse()                            # 读取回复的题头和数据
if reply.status != 200:
    print('Error sending request', reply.status, reply.reason)
    data = reply.readlines()
    reply.close()
    for line in data[:showlines]:
        print(line)
else:
    data = reply.readlines()                            # 接收到的数据文件对象，显示各行，末尾为换行符
    reply.close()
    for line in data[:showlines]:                       # 行已经有了'\n'不过都是字节内容
        print(line)
